package com.aimusic.enums;

import java.util.concurrent.TimeUnit;

/**
 * 手机号验证码枚举类（包含过期时间配置）
 */
public enum PhoneCode {

    /**
     * 注册场景：键前缀 + 5分钟过期
     */
    REGISTER("verify:register:", 5, TimeUnit.MINUTES),

    /**
     * 找回密码场景：键前缀 + 10分钟过期
     */
    FORGET_PASSWORD("verify:forgetPwd:", 10, TimeUnit.MINUTES);

    // 键前缀
    private final String keyPrefix;
    // 过期时间数值
    private final long expire;
    // 过期时间单位
    private final TimeUnit timeUnit;

    /**
     * 构造方法
     * @param keyPrefix 键前缀
     * @param expire 过期时间
     * @param timeUnit 时间单位
     */
    PhoneCode(String keyPrefix, long expire, TimeUnit timeUnit) {
        this.keyPrefix = keyPrefix;
        this.expire = expire;
        this.timeUnit = timeUnit;
    }

    /**
     * 生成完整的Redis存储键
     * @param phone 手机号
     * @return 完整键（前缀+手机号）
     */
    public String getKey(String phone) {
        return keyPrefix + phone;
    }

    // getter方法
    public long getExpire() {
        return expire;
    }

    public TimeUnit getTimeUnit() {
        return timeUnit;
    }
}
